"""
DHT爬虫的配置文件
包含所有可配置的参数和说明
"""

import logging


APP_NAME = "dht_crawler"

# 日志配置
LOG_LEVEL = logging.INFO
LOG_FORMAT = '%(asctime)s - %(name)s - %(levelname)s - %(message)s'
LOG_DATE_FORMAT = '%Y-%m-%d %H:%M:%S'


# DHT网络配置
DHT_PORT = 6881  # DHT监听端口，可以使用6881-6889

# 引导节点列表
# 这些是公共的DHT引导节点，用于初始化连接
BOOTSTRAP_NODES = [
    ('router.bittorrent.com', 6881),
    ('dht.transmissionbt.com', 6881),
    ('router.utorrent.com', 6881),
    ('dht.aelitis.com', 6881),          # Vuze/Azureus DHT
    ('dht.libtorrent.org', 25401),      # libtorrent DHT
    ('router.silotis.us', 6881),        # 另一个公共 DHT 节点
]

# RPC事务相关配置
TRANSACTION_TIMEOUT = 15  # 事务超时时间（秒）
MAX_TRANSACTIONS_CACHE = 1000  # 最大缓存事务数量

# 路由表配置
K_BUCKET_SIZE = 8  # K桶大小
NODE_ID_LENGTH = 20  # 节点ID长度（字节）
NODE_TIMEOUT = 900  # 节点超时时间（秒）
NODE_PING_COUNT = 3  # 节点ping次数,超过N次则认为节点活跃
SAVE_DB = True  # 是否保存到数据库

# 数据库配置
DATABASE_URL = "sqlite:///dht_crawler.db"  # SQLite
# 或者使用 MySQL
# DATABASE_URL = "mysql+pymysql://user:password@localhost/dht_crawler"